package xianxiaxhuanxin;

class One {
    public int a;

    public One() {
        this.a = 10;
    }

    public void show_a() {
        System.out.println(a);
    }
}

class Two extends One{
    public int b;

    public Two() {
        this.b = 20;
    }

    public void show_b() {
        System.out.println(b);
    }

}

public class try_ {
    //在向上转型中不能使用子类的方法
    // 而在向下转型中可以可以使用
    public static void main(String[] args) {
        Two hah = new Two();//子类
        One ha = hah;//大变小 向上转型 夫类
        ha.show_a();
        //将一个子类向上转型为父类后不能使用子类的成员
        //若要使用需要向下转型，将父类强转为子类
        //instanceof判断ha向上转型时的对象(hah)类型是不是Two
        //是的话就能转
        if (ha instanceof Two) {//从小变大
            hah = (Two)ha;
            hah.show_b();
            hah.show_a();//父子类的都能用
        }
        System.out.println("-----");
        three hhha = new three();
        One haha = hhha;
        haha.show_a();
        if (haha instanceof three) {
            three jj = (three)haha  ;
            jj.show_a();
            jj.show();
        }
}
}
